package com.ywy.bootadmin.dao.sys;

import com.ywy.bootadmin.model.sys.Task;
import com.ywy.bootadmin.model.sys.User;
import org.apache.ibatis.annotations.*;

import java.util.List;
import java.util.Map;


/**
 * 定时任务Dao
 *
 * @author ywy
 * @date 2022/1/7 16:44
 */
@Mapper
public interface TaskDao {
    /**
     * 查询任务数据个数
     * @param params
     * @return
     */
    Integer count(@Param("params") Map<String, Object> params);

    /**
     * 分页查询任务信息
     * @param offset
     * @param limit
     * @param params
     * @return
     */
    List<Task> listByPage(@Param("offset") Integer offset, @Param("limit") Integer limit, @Param("params") Map<String, Object> params);

    /**
     * 根据id查询任务信息
     * @param id
     * @return
     */
    @Select("select * from sys_task where id = #{id}")
    Task getById(Integer id);

    /**
     * 获取运行状态的任务信息
     * @return
     */
    @Select("select * from sys_task where job_status = 1")
    List<Task> getRunningTask();

    /**
     * 保存任务信息
     * @param task
     * @return
     */
    @Options(useGeneratedKeys = true, keyProperty = "id")
    @Insert("insert into sys_task(job_name, description, cron_expression, bean_class, job_status, job_group) values (#{jobName}, #{description}, #{cronExpression}, #{beanClass}, #{jobStatus}, #{jobGroup})")
    Integer save(Task task);

    /**
     * 修改任务信息
     * @param task
     * @return
     */
    int update(Task task);

    /**
     * 删除任务信息
     * @param id
     * @return
     */
    @Delete("delete from sys_task where id = #{id}")
    int delete(Integer id);

    /**
     * 批量删除任务信息
     * @param ids
     * @return
     */
    int batchDelete(Integer[] ids);
}
